home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / ask / source_ / atoi.s < prev    next >
Text File  |  1997-04-11  |  907b  |  46 lines

  1. *--------------------------------------------------------------------
  2. *    10進文字列読み取り(K対応)
  3. *--------------------------------------------------------------------
  4.  
  5.     .even
  6.     .text
  7.  
  8.     .xdef    Atoi
  9. Atoi:    * a6 <- str : 10進数値読み取り
  10.     * num -> d0.l>0
  11.     moveq.l    #0,d0        * num=0
  12.     *
  13.     moveq.l    #0,d1        * for .b -> .l
  14. AtoiLP:
  15.     move.b    (a6)+,d1
  16.     beq    Aret        * EOS
  17.     sub.b    #'0',d1
  18.     bmi    Aerr1        * '0'より小さい
  19.     cmp.b    #9,d1        * <=9?
  20.     ble    Aok        * '0'~'9'
  21. Aerr:    * 途中でbase進文字でない文字が出て来た
  22.     move.b    -1(a6),d1
  23.     ori.b    #$20,d1
  24.     cmp.b    #'k',d1        * K?
  25.     bne    Aerr1        * No
  26.     *
  27.     moveq.l    #10,d1
  28.     lsl.l    d1,d0        * <<10=*1024
  29.     bra.s    Aret
  30.  
  31. Aerr1:    * エラー
  32.     moveq.l    #-1,d0
  33.     rts
  34. *
  35. Aok:    add.l    d0,d0        * *2
  36.     add.l    d0,d1
  37.     add.l    d0,d0        * *4
  38.     add.l    d0,d0        * *8
  39.     add.l    d1,d0        * *8+(*2+c) = *10+c
  40.     bra    AtoiLP
  41. Aret:
  42.     rts
  43.  
  44. *--------------------------------------------------------------------
  45.     .end
  46.